// package randx 伪随机数相关的辅助函数集
package randx

import (
	"math/rand"

	"golang.org/x/exp/constraints"
)

// Integer 指定整数范围生成一个伪随机数
func Integer[T constraints.Integer](start T, end T) T {
	n64 := rand.Int63n(int64(end-start) + 1)
	return T(n64) + start
}

// IntegerMutiRange 指定多个整数范围生成一个伪随机数
func IntegerMutiRange[T constraints.Integer](ranges ...[2]T) T {
	idx := rand.Intn(len(ranges))
	start, end := ranges[idx][0], ranges[idx][1]
	return Integer(start, end)
}
